Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>First-Class-Objekt</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/First-Class-Objekt"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-First-Class-Objekt rootpage-First-Class-Objekt skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">First-Class-Objekt</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Ein <b>First-Class-Objekt</b> (<span style="font-style:normal;font-weight:normal"><a href="Englische_Sprache" title="Englische Sprache">englisch</a></span> <span lang="en-Latn" style="font-style:italic">first-class object</span>, deutsch etwa „Objekt erster Klasse“) bezeichnet in der <a href="Programmierung" title="Programmierung">Programmierung</a> von Computersystemen ein Objekt, das als Übergabeparameter oder Rückgabewert einer <a href="Funktion_(Programmierung)" title="Funktion (Programmierung)">Funktion</a> oder <a href="Prozedur_(Programmierung)" title="Prozedur (Programmierung)">Prozedur</a> auftritt bzw. einer <a href="Variable_(Programmierung)" title="Variable (Programmierung)">Variablen</a> zugewiesen werden kann.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Der Begriff wurde von <a href="Christopher_Strachey" title="Christopher Strachey">Christopher Strachey</a> im Kontext <i>functions as first-class citizens</i> Mitte der 1960er Jahre geprägt.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Definition">Definition</h2></div>
<p>Ein Objekt ist von erster Klasse, falls es die folgenden Bedingungen erfüllt:<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<ul><li>es kann in <a href="Variable_(Programmierung)" title="Variable (Programmierung)">Programmvariablen</a> gespeichert werden,</li>
<li>es kann als Parameter an Funktionen oder Prozeduren übergeben werden,</li>
<li>es kann als Rückgabewert von Funktionen dienen,</li>
<li>es kann zur <a href="Laufzeit_(Informatik)" title="Laufzeit (Informatik)">Laufzeit</a> eines Programms erstellt werden und</li>
<li>es hat eine eigene Identität (unabhängig vom Namen).</li></ul>
<p>Der Begriff Objekt muss dabei nicht im engeren Sinne als ein Objekt einer <a href="Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierten Programmiersprache</a> verstanden werden. In den meisten Programmiersprachen sind insbesondere die Objekte der elementaren <a href="Datentyp" title="Datentyp">Datentypen</a>, z.&nbsp;B. Ganzzahl- und Gleitkommaobjekte, immer erster Klasse.
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<ul><li>In <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> und <a href="C%2B%2B" title="C++">C++</a> sind Funktionen keine Objekte erster Klasse, da es nicht möglich ist, sie zur Laufzeit zu erzeugen – anders als z.&nbsp;B. <a href="Integer_(Datentyp)" title="Integer (Datentyp)">Zahlen</a>. Auch <a href="Feld_(Datentyp)" class="mw-redirect" title="Feld (Datentyp)">Arrays</a> sind keine Objekte erster Klasse, da sie nicht als Funktionsparameter übergeben werden können.</li>
<li>In <a href="Fortran" title="Fortran">Fortran</a> sind <a href="Zeichenkette" title="Zeichenkette">Strings</a> keine Objekte erster Klasse, da es nicht möglich ist, sie Variablen zuzuweisen.</li>
<li>Hingegen sind Funktionen in den meisten <a href="Funktionale_Programmierung" title="Funktionale Programmierung">funktionalen Programmiersprachen</a> First-Class-Objekte (bzw. <a href="First-Class-Funktion" title="First-Class-Funktion">First-Class-Funktionen</a>) z.&nbsp;B. in <a href="Haskell_(Programmiersprache)" title="Haskell (Programmiersprache)">Haskell</a>, <a href="Scala_(Programmiersprache)" title="Scala (Programmiersprache)">Scala</a>, <a href="Smalltalk-80_(Programmiersprache)" class="mw-redirect" title="Smalltalk-80 (Programmiersprache)">Smalltalk</a>, <a href="OCaml" title="OCaml">OCaml</a> und verschiedenen <a href="LISP" class="mw-redirect" title="LISP">Lisp-Dialekten</a> wie <a href="Scheme" title="Scheme">Scheme</a> und <a href="Clojure" title="Clojure">Clojure</a>, nicht jedoch in <a href="Common_Lisp" title="Common Lisp">Common Lisp</a>.</li>
<li>Die auf Konzepten von <a href="Scratch_(Programmiersprache)" title="Scratch (Programmiersprache)">Scratch</a> und <a href="Scheme" title="Scheme">Scheme</a> aufbauende <a href="Programmiersprachen_f%C3%BCr_Kinder" class="mw-redirect" title="Programmiersprachen für Kinder">erziehungsorientierte</a> <a href="Visuelle_Programmierung" class="mw-redirect" title="Visuelle Programmierung">visuelle</a> <a href="Programmiersprache" title="Programmiersprache">Programmiersprache</a> <a href="Snap!_(Programmiersprache)" title="Snap! (Programmiersprache)">Snap!</a> bietet einen anschaulichen und durchgängigen Zugang zu First-Class-Objekten.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Michael Scott: <cite style="font-style:italic">Programming Language Pragmatics</cite>. Morgan Kaufmann Publishers, San Francisco, CA 2006, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em">&nbsp;</span>140</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:First-Class-Objekt&amp;rft.au=Michael+Scott&amp;rft.btitle=Programming+Language+Pragmatics&amp;rft.date=2006&amp;rft.genre=book&amp;rft.pages=140&amp;rft.place=San+Francisco%2C+CA&amp;rft.pub=Morgan+Kaufmann+Publishers" style="display:none">&nbsp;</span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">Rod Burstall: <i>Christopher Strachey—Understanding Programming Languages.</i> Higher-Order and Symbolic Computation,
Band 13, Nr. 52, 2000.</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="http://www.c2.com/cgi/wiki?FirstClass"><i>First Class.</i></a> C2.com, 25.&nbsp;Januar 2006,<span class="Abrufdatum"> abgerufen am 9.&nbsp;Oktober 2010</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AFirst-Class-Objekt&amp;rft.title=First+Class&amp;rft.description=First+Class&amp;rft.identifier=http%3A%2F%2Fwww.c2.com%2Fcgi%2Fwiki%3FFirstClass&amp;rft.publisher=C2.com&amp;rft.date=2006-01-25">&nbsp;</span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="http://www.catalysoft.com/definitions/firstClassObject.html"><i>first class object.</i></a> Catalysoft.com,<span class="Abrufdatum"> abgerufen am 9.&nbsp;Oktober 2010</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AFirst-Class-Objekt&amp;rft.title=first+class+object&amp;rft.description=first+class+object&amp;rft.identifier=http%3A%2F%2Fwww.catalysoft.com%2Fdefinitions%2FfirstClassObject.html&amp;rft.publisher=Catalysoft.com">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2022-11-18" href="https://de.wikipedia.org/wiki/?title=First-Class-Objekt&amp;oldid=228079327">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>